home *** CD-ROM | disk | FTP | other *** search
/ Chip 1998 September / CHIP Eylül 1998.iso / Slackwar / docs / Thai-HOWTO < prev    next >
Text File  |  1997-07-27  |  38KB  |  968 lines

  1.   The Linux Thai HOWTO
  2.   Poonlap Veeratanabutr, poon-v@fedu.uec.ac.jp <mailto:poon-
  3.   v@fedu.uec.ac.jp>
  4.   v0.3, 16 July 1997
  5.  
  6.   This document describes how to set Linux to use Thai language. This
  7.   means at least, you can read and write Thai plain text document, name
  8.   filename in Thai and use some applications with Thai characters.  I
  9.   use Linux Slackware96, the path name I describe here may be different
  10.   to other distributions.
  11.  
  12.   1.  Introduction
  13.  
  14.   My motivation comes from ZzzThai Project
  15.   <http://www.fedu.uec.ac.jp/ZzzThai> by uecthai@fedu.uec.ac.jp
  16.   <mailto:uecthai@fedu.uec.ac.jp>, which describe how to use Thai with
  17.   many computer platforms. I joined this project, started from windows95
  18.   then I felt Linux is more interesting.
  19.  
  20.   This is the early version of Thai HOWTO. It is not complete yet. The
  21.   things I did not describe here, printing Thai document, Thai Tex, etc.
  22.   I will try to describe them in later version.
  23.  
  24.   Thai standard character codes is TIS620. Thai character codes are in
  25.   the same range as iso_8859_1, so we can treat it as iso_8859_1 type.
  26.   Now it seems to be iso_8859_11 standard. See
  27.   http://www.nectec.or.th/it-standards/iso8859-11
  28.   <http://www.nectec.or.th/it-standards/iso8859-11> about this new
  29.   standard.  With X11R6 there is information about Thai in
  30.   /usr/X11/include/X11/keysymdef.h and
  31.   /usr/X11/lib/X11/locale/th_TH.TACTIS. You may look in these directory
  32.   or file for your information. For now, it is better to treat Thai
  33.   character as iso_8859_1 and it works well.
  34.  
  35.   Thai characters are not like Latin characters. There are many position
  36.   in Thai character, normal position, character on other characters,
  37.   character under other characters. There is not space in sentences.
  38.   These are some problems in developing Thai word-processor.
  39.  
  40.   You can find the lastest version of this HOWTO document on
  41.   http://www.fedu.uec.ac.jp/ZzzThai/Linux
  42.   <http://www.fedu.uec.ac.jp/ZzzThai/Linux>
  43.  
  44.   2.  Thai Input and Output
  45.  
  46.   2.1.  Linux console
  47.  
  48.   2.1.1.  Thai fonts
  49.  
  50.   You can obtain Linux Thai console fonts which created by Khun Phaisarn
  51.   Techajaruwong from
  52.  
  53.        ftp://ftp.fedu.uec.ac.jp/pub/thai/UEC/ZzzThai/Software/Linux/Fonts
  54.        <ftp://ftp.fedu.uec.ac.jp/pub/thai/UEC/ZzzThai/Software/Linux/Fonts>
  55.  
  56.   For example, there is a font name "phaisarn.psf". You can load the new
  57.   font from Linux console by command
  58.  
  59.        %setfont phaisarn.psf
  60.  
  61.   You should put Thai fonts (psf format) in /usr/lib/kbd/consolefonts/.
  62.   If you want Thai font to be loaded automatically when you boot the
  63.   machine, create the file /etc/rc.d/rc.font (Slackware) as the follow¡
  64.   ing.
  65.  
  66.        #!/bin/sh
  67.        #
  68.        # This selects your default screen font from among the ones in
  69.        # /usr/lib/kbd/consolefonts.
  70.        #
  71.        setfont phaisarn.psf
  72.  
  73.   2.1.2.  Keyboard layout
  74.  
  75.   You can set keyboard behavior as you like by using loadkeys command.
  76.   Usually, you use loadkeys to load the file located in
  77.   /usr/lib/kbd/keytables. You can create the map file and save in this
  78.   directory. This is the sample.
  79.  
  80.   # thai.map
  81.   # This thai.map was modified by Poonlap Veeratanabutr (poon-v@fedu.uec.ac.jp)
  82.   # from us.map. Map Thai Kedmanee keyboard to US keyboard.
  83.   # 28 April 1997
  84.   # Thai/Us toggle key is AltGr(right alt).
  85.   keycode   0 =
  86.   keycode   1 = Escape           Escape
  87.           alt     keycode   1 = Meta_Escape
  88.   keycode   2 = +one              exclam          +aring          plus
  89.           alt     keycode   2 = Meta_one
  90.           alt shift keycode 2 = Meta_exclam
  91.   keycode   3 = +two              at              +slash          ntilde
  92.           control keycode   3 = nul
  93.           control shift keycode 3 = nul
  94.           alt     keycode   3 = Meta_two
  95.           alt shift keycode 3 = Meta_at
  96.   keycode   4 = +three            numbersign      +underscore     ograve
  97.           control keycode   4 = Escape
  98.           alt     keycode   4 = Meta_three
  99.           alt shift keycode 4 = Meta_numbersign
  100.   keycode   5 = +four             dollar          +Agrave         oacute
  101.           control keycode   5 = Control_backslash
  102.           alt     keycode   5 = Meta_four
  103.           alt shift keycode 5 = Meta_dollar
  104.   keycode   6 = +five             percent         +paragraph      ocircumflex
  105.           control keycode   6 = Control_bracketright
  106.           alt     keycode   6 = Meta_five
  107.           alt shift keycode 6 = Meta_percent
  108.   keycode   7 = +six              asciicircum     +Ooblique       Ugrave
  109.           control keycode   7 = Control_asciicircum
  110.           alt     keycode   7 = Meta_six
  111.           alt shift keycode 7 = Meta_asciicircum
  112.   keycode   8 = +seven            ampersand       +Odiaeresis     ssharp
  113.           control keycode   8 = Control_underscore
  114.           alt     keycode   8 = Meta_seven
  115.   keycode   9 = +eight            asterisk        +currency       otilde
  116.           control keycode   9 = Delete
  117.           alt     keycode   9 = Meta_eight
  118.   keycode  10 = +nine             parenleft       +mu             Odiaeresis
  119.           alt     keycode  10 = Meta_nine
  120.   keycode  11 = +zero             parenright      +diaeresis      division
  121.           alt     keycode  11 = Meta_zero
  122.   keycode  12 = +minus            underscore      +cent           oslash
  123.           control keycode  12 = Control_underscore
  124.           control shift keycode 12 = Control_underscore
  125.           alt     keycode  12 = Meta_minus
  126.   keycode  13 = +equal            plus            +ordfeminine    ugrave
  127.           alt     keycode  13 = Meta_equal
  128.   keycode  14 = Delete           Delete           Delete          Delete
  129.           alt     keycode  14 = Meta_Delete
  130.   keycode  15 = Tab              Tab              Tab             Tab
  131.           alt     keycode  15 = Meta_Tab
  132.   keycode  16 = +q        Q       +ae             eth
  133.   keycode  17 = +w        W       +adiaeresis     quotedbl
  134.   keycode  18 = +e        E       +Oacute         registered
  135.   keycode  19 = +r        R       +threequarters  plusminus
  136.   keycode  20 = +t        T       +ETH            cedilla
  137.   keycode  21 = +y        Y       +Ntilde         iacute
  138.   keycode  22 = +u        U       +Otilde         ecircumflex
  139.   keycode  23 = +i        I       +Atilde         threesuperior
  140.   keycode  24 = +o        O       +onesuperior    Idiaeresis
  141.   keycode  25 = +p        P       +Acircumflex    hyphen
  142.   keycode  26 = +bracketleft      braceleft       +masculine      degree
  143.           control keycode  26 = Escape
  144.           alt     keycode  26 = Meta_bracketleft
  145.           alt shift keycode 26 = Meta_braceleft
  146.   keycode  27 = +bracketright     braceright      +Aring          comma
  147.           control keycode  27 = Control_bracketright
  148.           alt     keycode  27 = Meta_bracketright
  149.           alt shift keycode 27 = Meta_braceright
  150.   keycode  28 = Return            Return          Return          Return
  151.           alt     keycode  28 = 0x080d
  152.   keycode  29 = Control           Control         Control         Control
  153.   keycode  30 = +a        A       +questiondown   Adiaeresis
  154.   keycode  31 = +s        S       +Ediaeresis     brokenbar
  155.   keycode  32 = +d        D       +exclamdown     macron
  156.   keycode  33 = +f        F       +acute          acircumflex
  157.   keycode  34 = +g        G       +agrave         notsign
  158.   keycode  35 = +h        H       +eacute         ccedilla
  159.   keycode  36 = +j        J       +egrave         ediaeresis
  160.   keycode  37 = +k        K       +Ograve         Eacute
  161.   keycode  38 = +l        L       +Ecircumflex    Egrave
  162.   keycode  39 = +semicolon        colon           +Ccedilla       guillemotleft
  163.           alt     keycode  39 = Meta_semicolon
  164.   keycode  40 = +apostrophe       quotedbl        +section        period
  165.           control keycode  40 = Control_g
  166.           alt     keycode  40 = Meta_apostrophe
  167.   keycode  41 = +grave            asciitilde      +minus          percent
  168.           control keycode  41 = nul
  169.           alt     keycode  41 = Meta_grave
  170.   keycode  42 = Shift            Shift            Shift           Shift
  171.   keycode  43 = +backslash        bar             +sterling       yen
  172.           control keycode  43 = Control_backslash
  173.           alt     keycode  43 = Meta_backslash
  174.           alt shift keycode 43 = Meta_bar
  175.   keycode  44 = +z        Z       +onequarter     parenleft
  176.   keycode  45 = +x        X       +guillemotright parenright
  177.   keycode  46 = +c        C       +aacute         copyright
  178.   keycode  47 = +v        V       +Iacute         Icircumflex
  179.   keycode  48 = +b        B       +Ocircumflex    Uacute
  180.   keycode  49 = +n        N       +multiply       igrave
  181.   keycode  50 = +m        M       +periodcentered question
  182.   keycode  51 = +comma    less    +Aacute         twosuperior
  183.           alt     keycode  51 = Meta_comma
  184.           alt shift keycode 51 = Meta_less
  185.   keycode  52 = +period           greater         +atilde         Igrave
  186.           alt     keycode  52 = Meta_period
  187.           alt shift keycode 52 = Meta_greater
  188.   keycode  53 = +slash            question        +onehalf        AE
  189.           control keycode  53 = Delete
  190.           alt     keycode  53 = Meta_slash
  191.   keycode  54 = Shift            Shift            Shift           Shift
  192.   keycode  55 = KP_Multiply
  193.   keycode  56 = Alt              Alt              Alt             Alt
  194.   keycode  57 = space            space            space           space
  195.           control keycode  57 = nul
  196.           alt     keycode  57 = Meta_space
  197.   keycode  58 = Caps_Lock        Caps_Lock        Caps_Lock       Caps_Lock
  198.   keycode  59 = F1               F11              Console_13
  199.           control keycode  59 = F1
  200.           alt     keycode  59 = Console_1
  201.           control alt     keycode  59 = Console_1
  202.   keycode  60 = F2               F12              Console_14
  203.           control keycode  60 = F2
  204.           alt     keycode  60 = Console_2
  205.           control alt     keycode  60 = Console_2
  206.   keycode  61 = F3               F13              Console_15
  207.           control keycode  61 = F3
  208.           alt     keycode  61 = Console_3
  209.           control alt     keycode  61 = Console_3
  210.   keycode  62 = F4               F14              Console_16
  211.           control keycode  62 = F4
  212.           alt     keycode  62 = Console_4
  213.           control alt     keycode  62 = Console_4
  214.   keycode  63 = F5               F15              Console_17
  215.           control keycode  63 = F5
  216.           alt     keycode  63 = Console_5
  217.           control alt     keycode  63 = Console_5
  218.   keycode  64 = F6               F16              Console_18
  219.           control keycode  64 = F6
  220.           alt     keycode  64 = Console_6
  221.           control alt     keycode  64 = Console_6
  222.   keycode  65 = F7               F17              Console_19
  223.           control keycode  65 = F7
  224.           alt     keycode  65 = Console_7
  225.           control alt     keycode  65 = Console_7
  226.   keycode  66 = F8               F18              Console_20
  227.           control keycode  66 = F8
  228.           alt     keycode  66 = Console_8
  229.           control alt     keycode  66 = Console_8
  230.   keycode  67 = F9               F19              Console_21
  231.           control keycode  67 = F9
  232.           alt     keycode  67 = Console_9
  233.           control alt     keycode  67 = Console_9
  234.   keycode  68 = F10              F20              Console_22
  235.           control keycode  68 = F10
  236.           alt     keycode  68 = Console_10
  237.           control alt     keycode  68 = Console_10
  238.   keycode  69 = Num_Lock
  239.   keycode  70 = Scroll_Lock      Show_Memory      Show_Registers
  240.           control keycode  70 = Show_State
  241.           alt     keycode  70 = Scroll_Lock
  242.   keycode  71 = KP_7
  243.           alt     keycode  71 = Ascii_7
  244.   keycode  72 = KP_8
  245.           alt     keycode  72 = Ascii_8
  246.   keycode  73 = KP_9
  247.           alt     keycode  73 = Ascii_9
  248.   keycode  74 = KP_Subtract
  249.   keycode  75 = KP_4
  250.           alt     keycode  75 = Ascii_4
  251.   keycode  76 = KP_5
  252.           alt     keycode  76 = Ascii_5
  253.   keycode  77 = KP_6
  254.           alt     keycode  77 = Ascii_6
  255.   keycode  78 = KP_Add
  256.   keycode  79 = KP_1
  257.           alt     keycode  79 = Ascii_1
  258.   keycode  80 = KP_2
  259.           alt     keycode  80 = Ascii_2
  260.   keycode  81 = KP_3
  261.           alt     keycode  81 = Ascii_3
  262.   keycode  82 = KP_0
  263.           alt     keycode  82 = Ascii_0
  264.   keycode  83 = KP_Period
  265.           altgr   control keycode  83 = Boot
  266.           control alt     keycode  83 = Boot
  267.   keycode  84 = Last_Console
  268.   keycode  85 =
  269.   keycode  86 = less             greater          bar
  270.           alt     keycode  86 = Meta_less
  271.   keycode  87 = F11              F11              Console_23
  272.           control keycode  87 = F11
  273.           alt     keycode  87 = Console_11
  274.           control alt     keycode  87 = Console_11
  275.   keycode  88 = F12              F12              Console_24
  276.           control keycode  88 = F12
  277.           alt     keycode  88 = Console_12
  278.           control alt     keycode  88 = Console_12
  279.   keycode  89 =
  280.   keycode  90 =
  281.   keycode  91 =
  282.   keycode  92 =
  283.   keycode  93 =
  284.   keycode  94 =
  285.   keycode  95 =
  286.   keycode  96 = KP_Enter
  287.   keycode  97 = Control
  288.   keycode  98 = KP_Divide
  289.   keycode  99 = Control_backslash
  290.           control keycode  99 = Control_backslash
  291.           alt     keycode  99 = Control_backslash
  292.   keycode 100 = AltGr_Lock
  293.   keycode 101 = Break
  294.   keycode 102 = Find
  295.   keycode 103 = Up
  296.   keycode 104 = Prior
  297.           shift   keycode 104 = Scroll_Backward
  298.   keycode 105 = Left
  299.           alt     keycode 105 = Decr_Console
  300.   keycode 106 = Right
  301.           alt     keycode 106 = Incr_Console
  302.   keycode 107 = Select
  303.   keycode 108 = Down
  304.   keycode 109 = Next
  305.           shift   keycode 109 = Scroll_Forward
  306.   keycode 110 = Insert
  307.   keycode 111 = Remove
  308.           altgr   control keycode 111 = Boot
  309.           control alt     keycode 111 = Boot
  310.   keycode 112 =
  311.   keycode 113 =
  312.   keycode 114 =
  313.   keycode 115 =
  314.   keycode 116 =
  315.   keycode 117 =
  316.   keycode 118 =
  317.   keycode 119 =
  318.   keycode 120 =
  319.   keycode 121 =
  320.   keycode 122 =
  321.   keycode 123 =
  322.   keycode 124 =
  323.   keycode 125 =
  324.   keycode 126 =
  325.   keycode 127 =
  326.   string F1 = "\033[[A"
  327.   string F2 = "\033[[B"
  328.   string F3 = "\033[[C"
  329.   string F4 = "\033[[D"
  330.   string F5 = "\033[[E"
  331.   string F6 = "\033[17~"
  332.   string F7 = "\033[18~"
  333.   string F8 = "\033[19~"
  334.   string F9 = "\033[20~"
  335.   string F10 = "\033[21~"
  336.   string F11 = "\033[23~"
  337.   string F12 = "\033[24~"
  338.   string F13 = "\033[25~"
  339.   string F14 = "\033[26~"
  340.   string F15 = "\033[28~"
  341.   string F16 = "\033[29~"
  342.   string F17 = "\033[31~"
  343.   string F18 = "\033[32~"
  344.   string F19 = "\033[33~"
  345.   string F20 = "\033[34~"
  346.   string Find = "\033[1~"
  347.   string Insert = "\033[2~"
  348.   string Remove = "\033[3~"
  349.   string Select = "\033[4~"
  350.   string Prior = "\033[5~"
  351.   string Next = "\033[6~"
  352.   string F21 = ""
  353.   string F22 = ""
  354.   string F23 = ""
  355.   string F24 = ""
  356.   string F25 = ""
  357.   string F26 = ""
  358.  
  359.   Suppose you save this file as thai.map. To load this file
  360.  
  361.        %loadkeys thai.map
  362.  
  363.   To switch to Thai input press the right Alt key. If you want to switch
  364.   to English press the right Alt key again. To set Thai keymap as
  365.   default (Slackware), after you put thai.map in /usr/lib/kbd/keytables
  366.   create the file /etc/rc.d/rc.keymap like the sample.
  367.  
  368.        #!/bin/sh
  369.        #
  370.        # Loadkeys will look for thai.map in /usr/lib/kbd/keytables
  371.        #
  372.        loadkeys thai
  373.  
  374.   The thai.map will be automatically loaded when you boot the machine.
  375.  
  376.   For RedHat, change the content of the file /etc/sysconfig/keyboard.
  377.  
  378.   2.2.  X Window system
  379.  
  380.   2.2.1.  Thai fonts
  381.  
  382.   To display Thai characters in X Window system, you must have Thai
  383.   fonts for X Window system. You can obtain Thai fonts in bdf format or
  384.   pcf format on internet.
  385.  
  386.        ftp://ftp.fedu.uec.ac.jp/pub/thai/UEC/ZzzThai/Software/UNIX/Fonts
  387.        <ftp://ftp.fedu.uec.ac.jp/pub/thai/UEC/ZzzThai/Software/UNIX/Fonts>
  388.        http://thaigate.rd.nacsis.ac.jp/files/thaifonts.html
  389.        <http://thaigate.rd.nacsis.ac.jp/files/thaifonts.html>
  390.        http://www.nectec.ac.th/pub/software/i18n/thai
  391.        <http://www.nectec.ac.th/pub/software/i18n/thai>
  392.  
  393.   These fonts usually come in tar or gz format. You must extract it by
  394.   using command tar or gunzip. You will get a lot of
  395.  
  396.   2.2.1.1.  Installing Thai fonts
  397.  
  398.   You must log in as root. Let's put Thai fonts in
  399.   /usr/X11/lib/X11/fonts/misc/ change directory to
  400.   /usr/X11/lib/X11/fonts/misc/ and run command
  401.  
  402.        #mkfontdir
  403.  
  404.   This command will update font database file. If you run this command
  405.   in X Windows system, you may need to restart X window to take effect.
  406.  
  407.   2.2.2.  Thai keyboard layout
  408.  
  409.   2.2.2.1.  Thai keyboard layout with xmodmap
  410.  
  411.   You can use the utility xmodmap to map Thai keyboard.  Normally
  412.   xmodmap is used to load the the file. There is the file .Xmodmap in
  413.   /use/X11/lib/X11/xinit/. This file will be load if you don't have
  414.   ~.xinitrc/ and .Xmodmap(in Slackware). The file
  415.   /usr/X11/lib/X11/xinit/.Xmodmap doesn't map all keys. It only solves
  416.   the Backspace/Delete key's problem. The following is the sample
  417.   .Xmodmap for Thai Kedmanee keyboard layout.
  418.  
  419.   !
  420.   ! Linux/XFree86 Thai Kedmanee layout (based on US keyboard)
  421.   ! Generated on Mon May 26 22:59:56 1997
  422.   ! by Poonlap Veeratanabutr (poon-v@fedu.uec.ac.jp)
  423.   ! Use ScrollLock to switch to Thai keyboard.
  424.   ! This file will work with XFree86 only.
  425.   !
  426.  
  427.   keycode 0x09 =  Escape
  428.   keycode 0x43 =  F1
  429.   keycode 0x44 =  F2
  430.   keycode 0x45 =  F3
  431.   keycode 0x46 =  F4
  432.   keycode 0x47 =  F5
  433.   keycode 0x48 =  F6
  434.   keycode 0x49 =  F7
  435.   keycode 0x4A =  F8
  436.   keycode 0x4B =  F9
  437.   keycode 0x4C =  F10
  438.   keycode 0x5F =  F11
  439.   keycode 0x60 =  F12
  440.   keycode 0x6F =  Print
  441.   keycode 0x4E =  Mode_switch     XF86ModeLock
  442.   keycode 0x6E =  Pause
  443.   keycode 0x31 =  grave           asciitilde      minus           percent
  444.   keycode 0x0A =  1               exclam          aring           plus
  445.   keycode 0x0B =  2               at              slash           ntilde
  446.   keycode 0x0C =  3               numbersign      underscore      ograve
  447.   keycode 0x0D =  4               dollar          Agrave          oacute
  448.   keycode 0x0E =  5               percent         paragraph       ocircumflex
  449.   keycode 0x0F =  6               asciicircum     Ooblique        Ugrave
  450.   keycode 0x10 =  7               ampersand       Odiaeresis      ssharp
  451.   keycode 0x11 =  8               asterisk        currency        otilde
  452.   keycode 0x12 =  9               parenleft       mu              odiaeresis
  453.   keycode 0x13 =  0               parenright      diaeresis       division
  454.   keycode 0x14 =  minus           underscore      cent            oslash
  455.   keycode 0x15 =  equal           plus            ordfeminine     ugrave
  456.   keycode 0x33 =  backslash       bar             sterling        yen
  457.   keycode 0x16 =  BackSpace
  458.   keycode 0x6A =  Insert
  459.   keycode 0x61 =  Home
  460.   keycode 0x63 =  Prior
  461.   keycode 0x4D =  Num_Lock
  462.   keycode 0x70 =  KP_Divide
  463.   keycode 0x3F =  KP_Multiply
  464.   keycode 0x52 =  KP_Subtract
  465.   keycode 0x17 =  Tab
  466.   keycode 0x18 =  q               Q               ae              eth
  467.   keycode 0x19 =  w               W               adiaeresis      quotedbl
  468.   keycode 0x1A =  e               E               Oacute          registered
  469.   keycode 0x1B =  r               R               threequarters   plusminus
  470.   keycode 0x1C =  t               T               ETH             cedilla
  471.   keycode 0x1D =  y               Y               Ntilde          iacute
  472.   keycode 0x1E =  u               U               Otilde          ecircumflex
  473.   keycode 0x1F =  i               I               Atilde          threesuperior
  474.   keycode 0x20 =  o               O               onesuperior     Idiaeresis
  475.   keycode 0x21 =  p               P               Acircumflex     hyphen
  476.   keycode 0x22 =  bracketleft     braceleft       masculine       degree
  477.   keycode 0x23 =  bracketright    braceright      Aring           comma
  478.   keycode 0x24 =  Return
  479.   keycode 0x6B =  Delete
  480.   keycode 0x67 =  End
  481.   keycode 0x69 =  Next
  482.   keycode 0x4F =  KP_7
  483.   keycode 0x50 =  KP_8
  484.   keycode 0x51 =  KP_9
  485.   keycode 0x56 =  KP_Add
  486.   keycode 0x42 =  Caps_Lock
  487.   keycode 0x26 =  a               A               questiondown    Adiaeresis
  488.   keycode 0x27 =  s               S               Ediaeresis      brokenbar
  489.   keycode 0x28 =  d               D               exclamdown      macron
  490.   keycode 0x29 =  f               F               acute           acircumflex
  491.   keycode 0x2A =  g               G               agrave          notsign
  492.   keycode 0x2B =  h               H               eacute          ccedilla
  493.   keycode 0x2C =  j               J               egrave          ediaeresis
  494.   keycode 0x2D =  k               K               Ograve          Eacute
  495.   keycode 0x2E =  l               L               Ecircumflex     Egrave
  496.   keycode 0x2F =  semicolon       colon           Ccedilla        guillemotleft
  497.   keycode 0x30 =  apostrophe      quotedbl        section         period
  498.   keycode 0x53 =  KP_4
  499.   keycode 0x54 =  KP_5
  500.   keycode 0x55 =  KP_6
  501.   keycode 0x32 =  Shift_L
  502.   keycode 0x34 =  z               Z               onequarter      parenleft
  503.   keycode 0x35 =  x               X               guillemotright  parenright
  504.   keycode 0x36 =  c               C               aacute          copyright
  505.   keycode 0x37 =  v               V               Iacute          Icircumflex
  506.   keycode 0x38 =  b               B               Ocircumflex     Uacute
  507.   keycode 0x39 =  n               N               multiply        igrave
  508.   keycode 0x3A =  m               M               periodcentered  question
  509.   keycode 0x3B =  comma           less            Aacute          twosuperior
  510.   keycode 0x3C =  period          greater         atilde          Igrave
  511.   keycode 0x3D =  slash           question        onehalf         AE
  512.   keycode 0x3E =  Shift_R
  513.   keycode 0x62 =  Up
  514.   keycode 0x57 =  KP_1
  515.   keycode 0x58 =  KP_2
  516.   keycode 0x59 =  KP_3
  517.   keycode 0x6C =  KP_Enter
  518.   keycode 0x25 =  Control_L
  519.   keycode 0x40 =  Alt_L           Meta_L
  520.   keycode 0x41 =  space
  521.   keycode 0x71 =  Alt_R           Meta_R
  522.   keycode 0x6D =  Control_R
  523.   keycode 0x64 =  Left
  524.   keycode 0x68 =  Down
  525.   keycode 0x66 =  Right
  526.   keycode 0x5A =  KP_0
  527.   keycode 0x5B =  KP_Decimal
  528.  
  529.   clear Shift
  530.   clear Lock
  531.   clear Control
  532.   clear Mod1
  533.   clear Mod2
  534.   clear Mod3
  535.   clear Mod4
  536.   clear Mod5
  537.  
  538.   add    Shift   = Shift_L Shift_R
  539.   add    Lock    = Caps_Lock
  540.   add    Control = Control_L Control_R
  541.   add    Mod1    = Alt_L Alt_R
  542.   add    Mod2    = Mode_switch
  543.  
  544.   Put this sample file in your home directory. If you have .xinitrc or
  545.   .xsession in your home directory, add the following line in those
  546.   files.
  547.  
  548.   xmodmap ~/.Xmodmap
  549.  
  550.   Thai/US toggle key is assigned to keycode 0x4E (78), Scroll Lock key
  551.   with the statement
  552.  
  553.        keycode 0x4E =  Mode_switch     XF86ModeLock
  554.  
  555.   XF86ModeLock is the special keysym for XFree86 X server. If you don't
  556.   add this keysym, you have to hold the scroll lock key while you are
  557.   typing Thai characters. Note that if you use accelerated X, some key¡
  558.   codes are different. You may have to map keyboard by yourself. I rec¡
  559.   ommend xkeycaps utility to config you keyboard behavior. You can get
  560.   xkeycaps lastest version from
  561.   http://home.netscape.com/people/jwz/xkeycaps
  562.   <http://home.netscape.com/people/jwz/xkeycaps>.  I submited the above
  563.   xmodmap file to Mr.Jamie Zawinski who created xkeycaps so you can find
  564.   above map file from xkeycaps too.
  565.  
  566.   Note: If you are using XFree86 version 3.1.2D or later, you need to
  567.   add the line XkbDisable in keyboard section in the XF86Config file. If
  568.   necessary you may config the keyboard section like the example.
  569.  
  570.        Section "Keyboard"
  571.           Protocol        "Standard"
  572.           AutoRepeat      500 5
  573.           LeftAlt         Meta
  574.           RightAlt        ModeShift
  575.           ScrollLock      ModeLock
  576.           RightCtl        Compose
  577.           XkbDisable
  578.        EndSection
  579.  
  580.   2.2.2.2.  XFree86 3.1.2D or later and Thai keyboard layout.
  581.  
  582.   Beginning with XFree86 3.1.2D, you can use the new X11R6.1 XKEYBOARD
  583.   extension to manage the keyboard layout. This is very helpful. You can
  584.   set Thai keyboard layout in 2 ways. First with traditional xmodmap,
  585.   second with XFree86 configuration.
  586.  
  587.   During X server configuration with xf86config you will be asked about
  588.   XKB, if you want to to set Thai keyboard layout for your system, say
  589.   yes. There are a list of preconfigured keymaps. Choose Standard
  590.   101-key, Thai encoding.
  591.  
  592.   XF86Setup is the graphical configuration utility for XFree86.
  593.   XF86Setup is normally used to either perform  the  initial setup of
  594.   the XFree86 X servers or to make adjustments to the existing
  595.   configuration. It is easier than traditional xf86config. You can see
  596.   the keyboard layout with this tool.
  597.  
  598.   Ther are many choices of switch key to select. The default is
  599.   Alt+RightShift switch to Thai and Alt+LeftShift switch to US. You can
  600.   input Thai characters but Thai fonts are not provided.
  601.  
  602.   I found that preconfigured keymaps that came with XFree86-3.2 (RedHat
  603.   4.2) is not correct. You may not be able to type THO THUNG which
  604.   located at "5 key". To fix this problem, you should add the line
  605.  
  606.            key <AE05> {        [], [   paragraph,      ocircumflex     ]       };
  607.  
  608.   in the file /usr/X11R6/lib/X11/xkb/symbols/th as the example.
  609.  
  610.            key <AE03> {        [], [       minus,      ograve          ]       };
  611.            key <AE04> {        [], [      Agrave,      oacute          ]       };
  612.            key <AE05> {        [], [   paragraph,      ocircumflex     ]       };
  613.            key <AE06> {        [], [    Ooblique,      Ugrave          ]       };
  614.            key <AE07> {        [], [  Odiaeresis,      ssharp          ]       };
  615.  
  616.   You can not type SORUSI also. Please change the line from
  617.  
  618.            key <AC08> {        [], [      Ograve,      eacute          ]       };
  619.  
  620.   to
  621.  
  622.            key <AC08> {        [], [      Ograve,      Eacute          ]       };
  623.  
  624.   Note that eacute is MAITHO and Eacute is SORUSI.
  625.  
  626.   There are also XKB extension utilities such as setxkbmap, xkbcomp,
  627.   etc. Please see man page for more information.
  628.  
  629.   The following is the example. It is the part of XF86Config file in
  630.   keyboard section. This configuration uses the default toggle key.
  631.  
  632.   Section "Keyboard"
  633.      Protocol        "Standard"
  634.      AutoRepeat      500 5
  635.      LeftAlt         Meta
  636.      RightAlt        Meta
  637.      ScrollLock      Compose
  638.      RightCtl        Control
  639.   #   XkbDisable
  640.      XkbKeycodes     "xfree86"
  641.      XkbTypes        "default"
  642.      XkbCompat       "default"
  643.      XkbSymbols      "us(pc101)"
  644.      XkbGeometry     "pc"
  645.      XkbRules        "xfree86"
  646.      XkbModel        "pc101"
  647.      XkbLayout       "th"
  648.   EndSection
  649.  
  650.   If you use XKB extension, Thai keyboard mapping with xmodmap may not
  651.   work.
  652.  
  653.   3.  Applications with Thai characters
  654.  
  655.   This is the tricky part. Most applications support iso_8859_1
  656.   characters or 8-bit characters. For example, emacs can display
  657.   iso_8859_1 character. If we set emacs to display iso_8859_1 and use
  658.   Thai font, you can edit Thai document with emacs.
  659.  
  660.   You should define the environment LC_CTYPE to iso_8859_1 in
  661.   /etc/profile (for bash users) and /etc/csh.cshrc (for tcsh users).
  662.   Similarly you should (for the sake of principle) put something like
  663.   this in your
  664.  
  665.        *basicLocale:   C
  666.        *timeFormat:    C
  667.        *numeric:       C
  668.        *displayLang:   iso_8859_1
  669.        *inputLang:     iso_8859_1
  670.  
  671.   If you use libc-4.x.xx you should set LC_CTYPE to ISO-8859-1 instead
  672.   of iso_8859_1.
  673.  
  674.   These are some of applications which can use with Thai characters and
  675.   how to config them. To make X window application displays Thai font,
  676.   you should run the application with -fn option. For example,
  677.  
  678.        #xterm -fn thai8x16
  679.  
  680.   If you don't want to fill -fn option every time you run application.
  681.   You should set Thai font in your ~/.Xdefaults or ~/.Xresources like
  682.   this
  683.  
  684.   XTerm*font:     NameOfThaifont
  685.  
  686.   3.1.  Non-network applications
  687.  
  688.   3.1.1.  xterm
  689.  
  690.   There are several programs running under xterm such as shell, pine,
  691.   vi, etc. Don't forget to use Thai font with xterm as I mention above.
  692.  
  693.      bash :
  694.         New versions of bash (v1.14.1+) only need to have LC_CTYPE set
  695.         to iso_8859_1, but if you have problems put the following in
  696.         your /etc/inputrc or ~/.inputrc file:
  697.  
  698.           set meta-flag on
  699.           set convert-meta off
  700.           set output-meta on
  701.  
  702.      I actually don't set LC_CTYPE environment variable to iso_8859_1
  703.      because this environment variable will effect other applications
  704.      too. With bash shell, you can specify which environment variable to
  705.      be passed to the application. I can make tterm (Thai Terminal) with
  706.      this syntax.
  707.  
  708.           LC_CTYPE=iso_8859_1 xterm -fn thai8x16
  709.  
  710.      It is helpful if you alias the commands like this in
  711.  
  712.           alias tterm='LC_CTYPE=iso_8859_1 xterm -fn thai8x16'
  713.           alias temacs='LC_CTYPE=iso_8859_1 emacs -fn -etl-fixed-medium-r-normal--16-160-72-72-m-80-tis620.2529-1'
  714.           alias ls='ls -F -N --color'
  715.  
  716.      To run xterm with bash shell that accepts Thai characters, you just
  717.      run tterm.  You can type Thai characters in command line. That
  718.      means you can name filenames in Thai.
  719.  
  720.      tcsh :
  721.         Put the following in your /etc/csh.cshrc or .tcshrc file:
  722.  
  723.           setenv LC_CTYPE iso_8859_1
  724.  
  725.      Note: If this doesn't work, your copy of tcsh was probably not com¡
  726.      piled with NLS support or possibly it's version 6.03 or lower.
  727.  
  728.      ls :
  729.         Issue the command as
  730.  
  731.           ls -N
  732.  
  733.      or possibly
  734.  
  735.           ls --8bit
  736.  
  737.      You may set alias in ~/.bashrc or ~/.cshrc, so you can type ls
  738.      without option. If you don't use ls with -N option, you may see
  739.      Thai filename as ?????.
  740.  
  741.      less :
  742.         Set the following environment variable:
  743.  
  744.           LESSCHARSET=latin1
  745.  
  746.   3.1.2.  emacs
  747.  
  748.   In version 19.26 or later of GNU emacs for X11 you can simply  set the
  749.   environment variable LC_CTYPE to iso_8859_1. If you use an older
  750.   version or use emacs under plain Linux put the following in your
  751.   ~/.emacs  or the the system-wide initialization file (probably
  752.   /usr/lib/emacs/site-lisp/default.el):
  753.  
  754.        (standard-display-european t)
  755.  
  756.        (set-input-mode (car (current-input-mode))
  757.                (nth 1 (current-input-mode))
  758.                0)
  759.  
  760.   If you run emacs already, press Esc-x and type standard-display-
  761.   european in minibuffer, this command will tell emacs to display 8-bit
  762.   character.
  763.  
  764.   If you use bash shell you can run emacs in this way,
  765.  
  766.        LC_CTYPE=iso_8859_1 emacs -fn -etl-fixed-medium-r-normal--16-160-72-72-m-80-tis620.2529-1
  767.  
  768.   This will set LC_CTYPE=iso_8859_1 for emacs only.
  769.  
  770.   Because some Thai characters have 0 width, cursor's position may be
  771.   not in the right place. you should use the fonts from mule. You can
  772.   get these fonts from
  773.  
  774.        ftp://ftp.fedu.uec.ac.jp/pub/thai/UEC/ZzzThai/Software/UNIX/Fonts/Mule/etl_fonts.tar
  775.        <ftp://ftp.fedu.uec.ac.jp/pub/thai/UEC/ZzzThai/Software/UNIX/Fonts/Mule/etl_fonts.tar>
  776.  
  777.   Therefore I use the font -etl-fixed-medium-r-
  778.   normal--16-160-72-72-m-80-tis620.2529-1 in an example.
  779.  
  780.   3.1.3.  vi
  781.  
  782.   Vi should be run on xterm that uses Thai font.
  783.  
  784.   3.1.4.  xedit
  785.  
  786.   Run xedit with -fn option like xterm. This application can display
  787.   Thai characters in the right position.
  788.  
  789.   3.2.  Network applications
  790.  
  791.   3.2.1.  E-mail
  792.  
  793.   You can not send Thai E-mail with mail command. Mail command transfers
  794.   mail in 7 bit. You should use mail application that supports MIME such
  795.   as pine or elm.
  796.  
  797.      elm:
  798.         Put the following definitions in your ~/.elm/elmrc file:
  799.  
  800.           charset = iso-8859-1
  801.           displaycharset = iso-8859-1
  802.           textencoding = 8bit
  803.  
  804.      This may not work on some versions of elm.
  805.  
  806.      pine :
  807.         Put the following definition in your ~/.pinerc file:
  808.  
  809.           # Reflects capabilities of the display you have. Default: US-ASCII.
  810.           # Typical alternatives include ISO-8859-x, (x is a number between 1 and 9).
  811.           character-set=ISO-8859-1
  812.  
  813.      This can also be set via the Setup option in pine. You can find it
  814.      under Config.
  815.  
  816.   3.2.2.  tin
  817.  
  818.   Put the following definitions in your ~/.tin/headers file:
  819.  
  820.        Mime-Version: 1.0
  821.        Content-Type: text/plain; charset=iso-8859-1
  822.        Content-Transfer-Encoding: 8bit
  823.  
  824.   Now you can post messages with the proper Danish characters in the
  825.   message body.
  826.  
  827.   3.2.3.  lynx
  828.  
  829.   Put the following definition in your ~/.lynxrc file:
  830.  
  831.        character_set=ISO Latin 1
  832.  
  833.   This can also be set via the Options menu in lynx. Type `o' and set
  834.   the relevant option.
  835.  
  836.   3.2.4.  Netscape
  837.  
  838.   If you have Thai fonts in your system. You just select Thai fonts from
  839.   Options | General Preferences | Fonts. Thai fonts will appear in
  840.   ISO-8859-1 or in User defined. See
  841.   http://www.fedu.uec.ac.jp/ZzzThai/unix
  842.   <http://www.fedu.uec.ac.jp/ZzzThai/unix> for setting Thai language on
  843.   Netscape.
  844.  
  845.   3.3.  Thai Applications on X window.
  846.  
  847.   As I know. There are few Thai applications on X window.
  848.  
  849.   Likit is the Thai editor and mail sender (by uuencode) that does not
  850.   need Thai font. Likit was created by Khun Vuthichai Ampornaramveth.
  851.   You can find this application from thaigate site.
  852.  
  853.   If you are using Tex or Latex, you may want to use Thai Tex. This is
  854.   the work of Dr. Manop Wongsaisuwan and his friends at Tokyo Institute
  855.   of technology. You can also find Thai tex on
  856.   http://thaigate.nacsis.ac.jp/files/ttex.html
  857.   <http://thaigate.nacsis.ac.jp/files/ttex.html>.
  858.  
  859.   Txterm, this is Thai xterm version. I don't know much about this.
  860.  
  861.   Xzthai, this is the Tcl/Tk application for mapping Thai keyboard on US
  862.   keyboard with graphical user interface. Also provides simple editor
  863.   and keyboard layout figure. You need to have Thai font. It actually
  864.   uses xmodmap program in background to map US keyboard and Thai
  865.   keyboard. This program was created by me. See
  866.   http://www.fedu.uec.ac.jp/ZzzThai/xio/xzthai.html
  867.   <http://www.fedu.uec.ac.jp/ZzzThai/xio/xzthai.html>
  868.  
  869.   3.4.  Other Tips.
  870.  
  871.   Now you can configure the applications to be more Thai environment.
  872.   Because Xt based applications allows user to configure the
  873.   applications by resources. We can make the menu or label to be Thai
  874.   language.
  875.  
  876.   For example, if you want xman to display Thai labels. You may add
  877.   these lines in your .Xdefaults
  878.  
  879.        !!  Xman section
  880.        Xman*Font:                          thai8x16
  881.        Xman*helpButton.Label:              ¬Φ╟┬
  882.        Xman*quitButton.Label:              ══í
  883.        Xman*manpageButton.Label:           ñ┘Φ┴╫═í╥├π¬Θ
  884.  
  885.   4.  References and FTP sites
  886.  
  887.   4.1.  Other documents of relevance
  888.  
  889.   The HOWTOs ought to be available from all mirrors of sunsite.unc.edu.
  890.  
  891.   The Linux Danish/International HOWTO by Niels Kristian Bech Jensen
  892.  
  893.   The Linux Cyrillic HOWTO by Alexander L. Belikoff
  894.  
  895.   The Keystroke mini-HOWTO by Zenon Fortuna.
  896.  
  897.   The Locales mini-HOWTO by Peeter Joot. (This one is mainly for
  898.   developers.)
  899.  
  900.   The ISO-8859-1 FAQ and Programming for Internationalization FAQ (plus
  901.   much more) by Michael Gschwind is available from his homepage
  902.   <http://www.vlsivie.tuwien.ac.at/mike/i18n.html>.
  903.  
  904.   NACSIS R& D Thai Project Page <http://thaigate.rd.nacsis.ac.jp> You
  905.   can get information about Thai computing here.
  906.  
  907.   ZzzThai Project <http://www.fedu.uec.ac.jp/ZzzThai/>, by The group of
  908.   students in The University of Electro-Communications, Tokyo. Describe
  909.   how to use Thai with many computer platforms.
  910.  
  911.   Vuthichai's Page <http://www.ctrl.titech.ac.jp:80/~vuthi/>, contains
  912.   information about Thai computing by Khun Vuthichai Ampornaramveth.
  913.  
  914.   4.2.  FTP and Web sites
  915.  
  916.   NACSIS R & D Thai Project : http://thaigate.rd.nacsis.ac.jp
  917.   <http://thaigate.rd.nacsis.ac.jp> You can find Thai tex on this site.
  918.  
  919.   ZzzThai Project : http://www.fedu.uec.ac.jp/ZzzThai
  920.   <http://www.fedu.uec.ac.jp/ZzzThai>
  921.  
  922.   Vuthichai's Homepage : http://www.ctrl.titech.ac.jp:80/~vuthi/
  923.   <http://www.ctrl.titech.ac.jp:80/~vuthi/>
  924.  
  925.   SunSite <ftp://sunsite.unc.edu/pub/linux/> and mirrors.  doc/howto has
  926.   the above mentioned HOWTOs. utils/nls and subdirectories contain files
  927.   related to National Language Support.  Developers should take a look
  928.   at locale-tutorial-0.8.txt.gz, locale-pack-0.8.tar.gz and cat-
  929.   pack.tar.gz.
  930.  
  931.   The GNU archives <ftp://prep.ai.mit.edu/pub/gnu/> has the recode
  932.   package for character table conversion, the ABOUT-NLS file and the
  933.   gettext package for locale support of some GNU applications and (of
  934.   course) the latest versions of GNU emacs.
  935.  
  936.   5.  Acknowledgments and Copyright
  937.  
  938.   Some parts of this HOWTO comes from The Linux Danish/International
  939.   HOWTO by Thomas Petersen, petersen@post1.tele.dk (the original author)
  940.   and Niels Kristian Bech Jensen, nkbj@image.dk.
  941.  
  942.   Thank you to Phaisarn Techajaruwong for building Thai fonts and
  943.   valuable discussion.  Thank you to Thai students at The University of
  944.   Electro-Communications and Khun Vuthichai Ampornaramveth for every
  945.   help.
  946.  
  947.   This HOWTO is copyrighted by Poonlap Veeratanabutr, poon-
  948.   v@fedu.uec.ac.jp. It is distributed as other Linux HOWTOs under the
  949.   terms described below.
  950.  
  951.   Linux HOWTO documents may be reproduced and distributed in whole or in
  952.   part, in any medium physical or electronic, as long as this copyright
  953.   notice is retained on all copies. Commercial redistribution is allowed
  954.   and encouraged; however, the authors would like to be notified of any
  955.   such distributions.
  956.  
  957.   All translations, derivative works, or aggregate works incorporating
  958.   any Linux HOWTO documents must be covered under this copyright notice.
  959.   That is, you may not produce a derivative work from a HOWTO and impose
  960.   additional restrictions on its distribution. Exceptions to these rules
  961.   may be granted under certain conditions; please contact the Linux
  962.   HOWTO coordinator at the address given below.
  963.  
  964.   If you have questions, please contact Greg Hankins, the Linux HOWTO
  965.   coordinator, at gregh@sunsite.unc.edu <mailto:gregh@sunsite.unc.edu>
  966.   via email.
  967.  
  968.